home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / programer2 / icon / Docs / Ipd132 < prev    next >
Text File  |  1990-07-19  |  23KB  |  793 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                   Version 8 of Icon for MS-DOS
  8.  
  9.                         Ralph E. Griswold
  10.     Department of Computer Science, The University of Arizona
  11.  
  12.  
  13.  
  14. 1.__Introduction
  15.  
  16.    Version 8 of Icon for MS-DOS should run on any computer run-
  17. ning MS-DOS 3.0 or higher.  Math coprocessors are supported and
  18. used if present; otherwise software emulation is used.  Approxi-
  19. mate 500K of free RAM is needed to run Icon satisfactorily.  Two
  20. versions of Icon's executor system are provided. One supports
  21. arithmetic on integers of unlimited magnitude and the other does
  22. not. The latter is smaller and can be used if you do not have
  23. enough RAM for the former.
  24.  
  25.    Version 8 of Icon for MS-DOS is distributed on 5.25" or 3.5"
  26. diskettes, which include executable binary files, a few test pro-
  27. grams, and documentation in machine-readable form. Printed docu-
  28. mentation is included with diskettes distributed by the Icon Pro-
  29. ject at the University of Arizona.
  30.  
  31.    This implementation of Icon is in the public domain and may be
  32. copied and used without restriction.  The Icon Project makes no
  33. warranties of any kind as to the correctness of this material or
  34. its suitability for any application.  The responsibility for the
  35. use of Icon lies entirely with the user.
  36.  
  37.  
  38. 2.__Documentation
  39.  
  40.    The basic reference for the Icon programming language is the
  41. book
  42.  
  43.      The Icon Programming Language, second edition, Ralph E.
  44.      Griswold and Madge T. Griswold, Prentice-Hall, Inc., Engle-
  45.      wood Cliffs, New Jersey, 1990. 365 pages. ISBN 0-13-447889-
  46.      4. $29.95.
  47.  
  48. This book is available from the Icon Project at the University of
  49. Arizona. It also can be ordered through any bookstore that han-
  50. dles special orders or by telephone directly from Prentice-Hall:
  51. (201) 767-9520.
  52.  
  53.    Note that the first edition of this book, published in 1983,
  54. describes an older version of Icon and does not contain informa-
  55. tion about many of the features of Version 8.
  56.  
  57.    A brief overview of Icon is contained in technical report TR
  58. 90-6 [1] (tr90-6.doc on the distribution diskette). Features that
  59. have been added to Icon since the book was written are described
  60. in TR 90-1 [2] (tr90-1.doc on the distribution diskette).  These
  61.  
  62.  
  63.  
  64. IPD132                        - 1 -                March 29, 1990
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. technical reports, together with this document (ipd132.doc on
  74. this diskette), provide enough information to write and run sim-
  75. ple Icon programs, but persons who intend to use Icon extensively
  76. will need the book.
  77.  
  78.  
  79. 3.__Installing_MS-DOS_Icon
  80.  
  81.    Two executable binary files are needed to run Icon:
  82.  
  83.         icont.exe   translator
  84.         iconx.exe   executor
  85.  
  86. These files should be located at a place on your PATH specifica-
  87. tion.  As mentioned in Section 1, there are two forms of iconx:
  88. one without large-integer arithmetic and one with it.  The former
  89. is named iconx.exe as distributed, while the latter is named
  90. iconxl.exe.
  91.  
  92.    The distribution is contained in several files in ARC format.
  93. A copy of pkxarc.com is included for dearchiving. The distribu-
  94. tion files are:
  95.  
  96.         pkxarc.com   dearchiving utility
  97.         icon.arc     executable binary files [474KB]
  98.         samples.arc  Icon programs and data [3KB]
  99.         docs.arc     documents [97KB]
  100.         readme       installation overview and recent notes
  101.  
  102. The figures in brackets give the approximate amount of disk space
  103. needed when the files are extracted from their archives. (It is
  104. not necessary to keep both executors.)
  105.  
  106.    To install the .exe files, set your current directory to the
  107. desired place, place the second distribution diskette in drive A,
  108. and dearchive the files there using pkxarc.com on the distribu-
  109. tion diskette:
  110.  
  111.         a:pkxarc a:icon.arc
  112.  
  113. The same technique can be used for extracting the remaining files
  114. on the other diskette.
  115.  
  116.    The simplest way to use Icon is to pick the executor that fits
  117. your needs, place it at a location on your path, and rename it to
  118. iconx.exe if necessary. For example, if you want the executor
  119. that supports large-integer arithmetic, the following will do:
  120.  
  121.         rename iconxl.exe iconx.exe
  122.  
  123. However, if you want to use both executors, you can either name
  124. them differently (such as they are named above) and use them by
  125. their different names, or you can name them the same but put them
  126. in different locations. In this case, you will have to change
  127.  
  128.  
  129.  
  130. IPD132                        - 2 -                March 29, 1990
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139. your path depending on which one you use.
  140.  
  141.  
  142. 4.__Running_MS-DOS_Icon_-_Basic_Information
  143.  
  144.    Files containing Icon programs must have the extension .icn.
  145. Such files should be plain text files (without line numbers or
  146. other extraneous information).  The icont  translator produces an
  147. ``icode'' file that can be executed by iconx.  For example, an
  148. Icon program in the file prog.icn is translated by
  149.  
  150.         icont prog.icn
  151.  
  152. The result is an icode file with the name prog.icx.  This file
  153. can be run by
  154.  
  155.         iconx prog.icx
  156.  
  157. If your executor is named differently, simply use that name. For
  158. example, if your executor is named iconxl.exe, use
  159.  
  160.         iconxl prog.icx
  161.  
  162. Alternatively, icont can be instructed to execute the icode file
  163. after translation by appending a -x to the command line, as in
  164.  
  165.         icont prog.icn -x
  166.  
  167. This only works if your executor is named iconx.exe, since the -x
  168. option looks for this name.  In the sections that follow, it is
  169. assumed that the executor is named iconx.exe.
  170.  
  171.    If icont is run with the -x option, the file prog.icx is left
  172. and can be run subsequently using an explicitly named executor as
  173. described above.
  174.  
  175.    The extensions .icn and .icx are optional. For example, it is
  176. sufficient to use
  177.  
  178.         icont prog
  179.  
  180. and
  181.  
  182.         iconx prog
  183.  
  184.  
  185.  
  186.  
  187. 5.__Testing_the_Installation
  188.  
  189.    There are a few programs on the distribution diskette that can
  190. be used for testing the installation and getting a feel for run-
  191. ning Icon:
  192.  
  193.  
  194.  
  195.  
  196. IPD132                        - 3 -                March 29, 1990
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.      hello.icn   This program prints the Icon version number,
  206.                  time, and date. Run this test as
  207.  
  208.                          icont hello
  209.                          iconx hello
  210.  
  211.                  Note that this can be done in one step with
  212.  
  213.                          icont hello -x
  214.  
  215.  
  216.      cross.icn   This program prints all the ways that two words
  217.                  intersect in a common character. The file
  218.                  cross.dat contains typical data. Run this test
  219.                  as
  220.  
  221.                          icont cross -x <cross.dat
  222.  
  223.  
  224.      meander.icn This program prints the ``meandering strings''
  225.                  that contain all subsequences of a specified
  226.                  length from a given set of characters. Run this
  227.                  test as
  228.  
  229.                          icont meander -x <meander.dat
  230.  
  231.  
  232.      roman.icn   This program converts Arabic numerals to Roman
  233.                  numerals. Run this test as
  234.  
  235.                          icont roman -x
  236.  
  237.                  and provide some Arabic numbers from your con-
  238.                  sole.
  239.  
  240. If these tests work, your installation is probably correct and
  241. you should have a running version of Icon.
  242.  
  243.  
  244. 6.__More_on_Running_Icon
  245.  
  246.    For simple applications, the instructions for running Icon
  247. given in Section 4 may be adequate. The icont translator supports
  248. a variety of options that may be useful in special situations.
  249. There also are several aspects of execution that can be con-
  250. trolled with environment variables.  These are listed here. If
  251. you are new to Icon, you may wish to skip this section on the
  252. first reading but come back to it if you find the need for more
  253. control over the translation and execution of Icon programs.
  254.  
  255. 6.1__Arguments
  256.  
  257.    Arguments can be passed to the Icon program by appending them
  258. to the command line.  Such arguments are passed to the main
  259.  
  260.  
  261.  
  262. IPD132                        - 4 -                March 29, 1990
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271. procedure as a list of strings.  For example,
  272.  
  273.         iconx prog text.dat log.dat
  274.  
  275. runs the icode file prog.icx, passing its main procedure a list
  276. of two strings, "text.dat" and "log.dat".  The program also can
  277. be translated and run with these arguments with a single command
  278. line by putting the arguments after the -x:
  279.  
  280.         icont prog -x text.dat log.dat
  281.  
  282. These arguments might be the names of files that prog.icn reads
  283. from and writes to. For example, the main procedure might begin
  284. as follows:
  285.  
  286.         procedure main(a)
  287.            in := open(a[1]) | stop("cannot open input file")
  288.            out := open(a[2],"w") | stop("cannot open output file")
  289.                        .
  290.                        .
  291.                        .
  292.  
  293. See also the information about the processing of command-line
  294. arguments given in Section 6.4.
  295.  
  296. 6.2__The_Translator
  297.  
  298.    The icont translator can accept several Icon source files at
  299. one time.  When several files are given, they are translated and
  300. combined into a single icode file whose name is derived from the
  301. name of the first file.  For example,
  302.  
  303.         icont prog1 prog2
  304.  
  305. translates the files prog1.icn and prog2.icn and produces one
  306. icode file, prog1.icx.
  307.  
  308.    A name other than the default one for the icode file produced
  309. by MiconfR can be specified by using the -o option, followed by
  310. the desired name. For example,
  311.  
  312.         icont -o probe.icx prog
  313.  
  314. produces the icode file named probe.icx rather than prog.icx.
  315.  
  316.    If the -c option is given to icont, the translator stops
  317. before producing an icode file and intermediate ``ucode'' files
  318. with the extensions .u1 and .u2 are left for future use (normally
  319. they are deleted).  For example,
  320.  
  321.         icont -c prog1
  322.  
  323. leaves prog1.u1 and prog1.u2, instead of producing prog1.icx.
  324. These ucode files can be used in a subsequent icont command by
  325.  
  326.  
  327.  
  328. IPD132                        - 5 -                March 29, 1990
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337. using the .u1 name. This saves translation time when the program
  338. is used again.  For example,
  339.  
  340.         icont prog2 prog1.u1
  341.  
  342. translates prog2.icn and combines the result with the ucode files
  343. from a previous translation of prog1.icn. Note that only the .u1
  344. name is given. The extension can be abbreviated to .u, as in
  345.  
  346.         icont prog2 prog1.u
  347.  
  348. Ucode files also can be added to a program using the link
  349. declaration in an Icon source program as described in [2].
  350.  
  351.    Icon source programs may be read from standard input.  The
  352. argument - signifies the use of standard input as a source file.
  353. In this case, the ucode files are named stdin.u1 and stdin.u2 and
  354. the icode file is named stdin.icx.
  355.  
  356.    The informative messages from the translator can be suppressed
  357. by using the -s option.  Normally, both informative messages and
  358. error messages are sent to standard error output.
  359.  
  360.    The -t option causes &trace to have an initial value of -1
  361. when the icode file is executed.  Normally, &trace has an initial
  362. value of 0.
  363.  
  364.    The option -u causes warning messages to be issued for unde-
  365. clared identifiers in the program.
  366.  
  367.    Icon has several tables related to the translation of pro-
  368. grams.  These tables are large enough for most programs, but
  369. translation is terminated with an error message, indicating the
  370. offending table, if there is not enough room.  If this happens,
  371. larger table sizes can be specified by using the -S option. This
  372. option has the form -S[cfgilnrstCFL]n, where the letter following
  373. the S specifies the table and n is the number of storage units to
  374. allocate for the table.
  375.  
  376.      c  constant table          100
  377.      f  field table             100
  378.      g  global symbol table     200
  379.      i  identifier table        500
  380.      l  local symbol table      100
  381.      n  line number table      1000
  382.      r  record table            100
  383.      s  string space          20000
  384.      t  tree space            15000
  385.      C  code buffer           15000
  386.      F  file names               10
  387.      L  labels                  500
  388.  
  389. The units depend on the table involved, but the default values
  390. can be used as guides for appropriate settings of -S options
  391.  
  392.  
  393.  
  394. IPD132                        - 6 -                March 29, 1990
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403. without knowing the units.  For example,
  404.  
  405.         icont -Sc200 -Sg600 prog
  406.  
  407. translates prog.icn with twice the constant table space and three
  408. times the global symbol table space that ordinarily would be pro-
  409. vided.
  410.  
  411. 6.3__Environment_Variables
  412.  
  413.    When an icode file is executed, several environment variables
  414. are examined to determine execution parameters.  The values
  415. assigned to these variables should be numbers.
  416.  
  417.    Environment variables are particularly useful in adjusting
  418. Icon's storage requirements. This may be necessary if your com-
  419. puter does not have enough memory to run programs that require an
  420. unusually large amount of data.  Particular care should be taken
  421. when changing default sizes: unreasonable values may cause Icon
  422. to malfunction.
  423.  
  424.    The following environment variables can be set to affect
  425. Icon's execution parameters. Their default values are listed in
  426. parentheses after the environment variable name:
  427.  
  428.         TRACE (undefined).  This variable initializes the value
  429.      of &trace.  If this variable has a value, it overrides the
  430.      translation-time -t option.
  431.  
  432.         NOERRBUF (undefined).  If this variable is set, &errout
  433.      is not buffered.
  434.  
  435.         STRSIZE (65000). This variable determines the initial
  436.      size, in bytes, of the region in which strings are stored.
  437.  
  438.         HEAPSIZE (65000).  This variable determines the initial
  439.      size, in bytes, of the region in which Icon allocates lists,
  440.      tables, and other objects.
  441.  
  442.         COEXPSIZE (2000). This variable determines the size, in
  443.      32-bit words, of each co-expression block.
  444.  
  445.         MSTKSIZE (10000). This variable determines the size, in
  446.      words, of the main interpreter stack.
  447.  
  448.         QLSIZE (5000). This variable determines the size, in
  449.      bytes, of the region used by the garbage collector for
  450.      pointers to strings.
  451.  
  452.    The maximum region size that can be specified is 65000.
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460. IPD132                        - 7 -                March 29, 1990
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469. 6.4__Details_of_Command-Line_Processing
  470.  
  471.    The processing of command-line arguments normally is important
  472. only in running iconx. Some details follow:
  473.  
  474.      +  An argument containing white space must be enclosed in
  475.         double quotes ("). For example, "abc def" is a valid
  476.         argument. The quotes are deleted in the string passed to
  477.         iconx.
  478.  
  479.      +  If a quoted argument contains a double quote, the embed-
  480.         ded quote must be preceded by a backslash. For example,
  481.         "abc de\"f" is a valid argument. The outer quotes and the
  482.         backslash are deleted in the string passed to iconx.
  483.  
  484.      +  If a non-quoted argument contains a double quote, the
  485.         embedded quote can be preceded by a backslash or not. For
  486.         example, abc\"d and abc"d are equivalent arguments.
  487.  
  488.      +  To pass a double quote as an argument, precede it with a
  489.         backslash.
  490.  
  491.      +  Wild-card characters are not expanded.
  492.  
  493.      +  Quote-balancing errors are not checked.  The start-up
  494.         routine scans the residual command line from left to
  495.         right.
  496.  
  497.  
  498. 7.__Features_of_MS-DOS_Icon
  499.  
  500.    MS-DOS Icon supports all the features of Version 8 of Icon,
  501. with the following exceptions and additions:
  502.  
  503.      +  Pipes are not supported. A file cannot be opened with the
  504.         "p" option.
  505.  
  506.      +  There are two additional options for open: "t" and "u".
  507.         The "t" option, which is the default, indicates that the
  508.         file is to be translated into UNIX* format.  All
  509.         carriage-return/line-feed sequences are translated into
  510.         line-feed characters on both input and output.  The "u"
  511.         option indicates that the file is to be untranslated.
  512.         Examples are:
  513.  
  514.                 untranfile := open("test.fil","ru")
  515.                 tranfile := open("test.new","wt")
  516.  
  517.  
  518.  
  519.  
  520. __________________________
  521. *UNIX is a trademark of AT&T Bell Laboratories.
  522.  
  523.  
  524.  
  525.  
  526. IPD132                        - 8 -                March 29, 1990
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.         For files opened in the translate mode, the position pro-
  536.         duced by seek() may not reflect the actual byte position
  537.         because of the translation of carriage-return/line-feed
  538.         sequences to line-feed characters.
  539.  
  540.      +  Path specifications can be entered using either a / or a
  541.         \. Examples are:
  542.  
  543.                 A:\ICON\TEST.ICN
  544.                 A:/ICON/TEST.ICN
  545.  
  546.  
  547.      +  The following MS-DOS device names can be used as file
  548.         names:
  549.  
  550.                 console        CON
  551.                 printer        PRN LST LPT LPT1
  552.                 auxiliary port AUX COM RDR PUN
  553.                 null           NUL NULL
  554.  
  555.         For example,
  556.  
  557.                 prompt := open("CON","w")
  558.  
  559.         causes strings written to prompt to be displayed on the
  560.         console.  Use of a null file name means no file is
  561.         created.
  562.  
  563.    MS-DOS Icon also has some functions in addition to the stan-
  564. dard repertoire:
  565.  
  566. MS-DOS_Interface_Functions
  567.  
  568.    Disclaimer: The following functions provide a gateway to func-
  569. tions provided by MS-DOS and ROM BIOS. They should be used with
  570. care, since Icon maintains strict control over its environment
  571. (although it uses standard MS-DOS interfaces and does not bypass
  572. MS-DOS or ROM BIOS in any way).  The descriptions that follow are
  573. low-level descriptions. They assume knowledge of the Intel 8086
  574. (8088, 80x86 etc.) architecture.
  575.  
  576. Int86(a):
  577.  
  578. Int86(a) generates a hardware interrupt. The input is a list of
  579. integer values: [interrupt number, ax, bx, cx, dx, si, di, es,
  580. ds].  It returns a list of the form [flags, ax, bx, cx, dx, si,
  581. di, es, ds].
  582.  
  583.    Great care must be taken in using this function. Some things
  584. to watch out for are:
  585.  
  586.      +  Interrupt functions that alter the stack registers (SS or
  587.         SP) or alter the MS-DOS memory chain (that is, allocate
  588.         or deallocate memory in the MS-DOS memory region). When
  589.  
  590.  
  591.  
  592. IPD132                        - 9 -                March 29, 1990
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.         Icon expands memory, it expects the next allocation to be
  602.         contiguous with the region it currently owns.
  603.  
  604.      +  Interrupt functions that operate on files opened by
  605.         Icon's open(s) function - that is, closing, seeking,
  606.         reading, or writing.
  607.  
  608.      +  The values of ES and DS may not be valid on return.
  609.  
  610.  
  611. InPort(i):
  612.  
  613. InPort(i) returns an integer from hardware port i.
  614.  
  615. OutPort(i1,i2):
  616.  
  617. OutPort(i1,i2) writes value i2 to hardware port i1.
  618.  
  619. GetSpace(i):
  620.  
  621. GetSpace(i) allocates a static block of storage outside of Icon's
  622. direct control (that is, it is not be affected by garbage collec-
  623. tion).  This function simply calls the malloc() allocation rou-
  624. tine and returns the address of the resulting block as a long
  625. integer.
  626.  
  627. FreeSpace(A):
  628.  
  629. FreeSpace(A) frees a static block of storage. A is a value
  630. returned by GetSpace(i).  No check is make to verify that the
  631. block was allocated by GetSpace(i). The results are unpredictable
  632. if it was not.  Arithmetic should not be performed directly on a
  633. value returned by GetSpace(i).
  634.  
  635. Peek(A,i):
  636.  
  637. Peek(A,i) builds a string pointing to the address specified by A
  638. with a length of i, where A is either an integer that specifies a
  639. linear address value or a list of the form [segment, offset] and
  640. i is a length (default 1).
  641.  
  642.    This is the only way of `seeing' the contents of a block of
  643. storage allocated by GetSpace(i). Consider the following example:
  644.  
  645.         block := Peek(addr := GetSpace(100),100)
  646.  
  647. The value of block is a string of length 100 and addr is the
  648. linear address of the block.
  649.  
  650. Peek(A,i) does not move data into Icon's memory region.  Instead,
  651. it builds a string qualifier that points to the data.
  652.  
  653. Poke(A,s):
  654.  
  655.  
  656.  
  657.  
  658. IPD132                       - 10 -                March 29, 1990
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667. Poke(A,s) copies a string s to location A, where A is an address
  668. specified in the same way as for Peek(A,s) and s is a string to
  669. be copied to that storage location. The string is copied directly
  670. into storage, byte by byte. No conversion is performed.  This is
  671. the only way of assigning data to a block of storage allocated by
  672. GetSpace(i).
  673.  
  674.  
  675. 8.__Known_Bugs
  676.  
  677.    A list of known bugs in Icon itself is given in [2].
  678.  
  679.    Under MS-DOS some programs that require a lot of memory may
  680. hang when run by the -x option to icont.  This can be avoided by
  681. using iconx in a separate step.
  682.  
  683.    Also, if there is not enough free RAM, the system() function
  684. may fail silently or hang.
  685.  
  686.  
  687. 9.__Reporting_Problems
  688.  
  689.    Problems with Icon should be noted on a trouble report form
  690. (included with the distribution) and sent to
  691.  
  692.         Icon Project
  693.         Department of Computer Science
  694.         Gould-Simpson Building
  695.         The University of Arizona
  696.         Tucson, AZ   85721
  697.         U.S.A.
  698.         (602) 621-4049
  699.         icon-project@cs.arizona.edu     (Internet)
  700.         ... {uunet, allegra, noao}!arizona!icon-project     (uucp)
  701.  
  702.  
  703.  
  704. 10.__Registering_Copies_of_Icon
  705.  
  706.    If you received your copy of Version 8 of Icon directly from
  707. the Icon Project, it has been registered in your name and you
  708. will receive the Icon Newsletter without charge. This Newsletter
  709. contains information about new implementations, updates, program-
  710. ming techniques, and information of general interest about Icon.
  711.  
  712.    If you received your copy of Version 8 of Icon from another
  713. source, please fill out the registration form that is included in
  714. the documents in the distribution) and send it to the Icon Pro-
  715. ject at the address listed above. This will entitle you to a free
  716. subscription to the Icon Newsletter and assure that you receive
  717. information about updates.
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724. IPD132                       - 11 -                March 29, 1990
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733. Acknowledgements
  734.  
  735.    The design and development of the Icon programming language
  736. was supported, in part, by the National Science Foundation under
  737. grants MCS75-01397, MCS79-03890, MCS81-01916, DCR-8320138, DCR-
  738. 8401831, and DCR-8502015.
  739.  
  740.    Many individuals contributed to the design and implementation
  741. of Icon. The principal ones are Cary Coutant, Dave Gudeman, Dave
  742. Hanson, Tim Korb, Bill Mitchell, Kelvin Nilsen, Janalee O'Bagy,
  743. Gregg Townsend, Ken Walker, and Steve Wampler.
  744.  
  745.    The implementation of Icon was adapted to MS-DOS by Cheyenne
  746. Wills in Mechanicsburg, Pennsylvania. He also provided some of
  747. the technical material contained in this document.
  748.  
  749. References
  750.  
  751.  
  752. 1.   R. E. Griswold, An Overview of Version 8 of the Icon
  753.      Programming Language, The Univ. of Arizona Tech. Rep. 90-6,
  754.      1990.
  755.  
  756. 2.   R. E. Griswold, Version 8 of Icon, The Univ. of Arizona
  757.      Tech. Rep. 90-1, 1990.
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790. IPD132                       - 12 -                March 29, 1990
  791.  
  792.  
  793.